From b555be06b7c2360e398a395fa9ea15ee755975ba Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 3 Jan 2011 12:34:23 -0500 Subject: [PATCH] Make styleexamples work If we are keeping this code in source control, might as well make it work. https://bugzilla.gnome.org/show_bug.cgi?id=638179 --- tests/Makefile.am | 1 + tests/gradient1.png | Bin 0 -> 722 bytes tests/styleexamples.c | 83 +++++++++++++++++++----------------------- 3 files changed, 39 insertions(+), 45 deletions(-) create mode 100644 tests/gradient1.png diff --git a/tests/Makefile.am b/tests/Makefile.am index fc4b58e1d7..61d5270666 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -408,6 +408,7 @@ testswitch_SOURCES = testswitch.c styleexamples_SOURCES = styleexamples.c EXTRA_DIST += \ + gradient1.png \ prop-editor.h \ testgtk.1 \ testgtk.css \ diff --git a/tests/gradient1.png b/tests/gradient1.png new file mode 100644 index 0000000000000000000000000000000000000000..248c998daf8e017ce682b3462d28abd6ceb5ec52 GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^DIm3R9Nsk+6HR<~HU%Ws899U4Dh3{Ql>|yk;zT$nd{R2q@IIB&Q{;;8o7~TYj;3H*X6L|Gwt! zm5VKPugYGfH0@Z`zC2y~>%;fw%3f_Pwl-BzUH9tY%bQ-czh5!{jmfe$6}ZZuzueF2 zXsE4?ZS+d(`Fx$1Hc!3f$LrF$x~igTTM+YnKFP}vk*|kuubiw=7`k5ZYtHVNO>N7c zPdQzdrQj8FHQ0Nv|Asv&y#D8{r@y`85Hj)0vp;rx-`BXj^u6tw{zvY!Y(<}_e-W|nu<)-->b3w)||;f%dYfld3c>)}%kjpb51Wm=z2Nje?a;HSA+ruF3%rqh8N{N}!mGznm0SRupu zZc5Rqz#o359+qBQ%clhNO**Q{tMBglWXiOiDRY?>*1eiK=MvNOHO7pW8iW{rCF*D} zI>cPnwp{9|AGw$TBz7cp@1)>auP2$xDDY}9E|5Rg1Qhe!J1_Xu{uEcnC5);J9c!x+ zmy1-NJjLR{?8UGlG3wyT&9>caUJMMen?50#`);NFiz#jKo79TD#Opujn|M9bpLsr#HKJP7*F?kJ4Ns7v-{r}K!QezC#C#ea^?S%WCGds<#0p*Q-g(W x literal 0 HcmV?d00001 diff --git a/tests/styleexamples.c b/tests/styleexamples.c index 75350ddd2d..e583ce8aea 100644 --- a/tests/styleexamples.c +++ b/tests/styleexamples.c @@ -97,24 +97,17 @@ draw_cb_expanders (GtkWidget *widget, cairo_t *cr) static gboolean draw_cb_background (GtkWidget *widget, cairo_t *cr) { - GtkStyleProvider *provider; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - "* {\n" - " border-radius: 10;\n" - " border-width: 0;\n" - " background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n" - "}\n", -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_class (context, "background"); gtk_style_context_set_junction_sides (context, 0); gtk_render_background (context, cr, 12, 12, 100, 100); - gtk_style_context_remove_provider (context, provider); + gtk_style_context_remove_class (context, "background"); + gtk_style_context_restore (context); return TRUE; @@ -123,33 +116,12 @@ draw_cb_background (GtkWidget *widget, cairo_t *cr) static gboolean draw_cb_frame (GtkWidget *widget, cairo_t *cr) { - GtkStyleProvider *provider; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - ".frame1 {\n" - " border-image: url('gradient1.png') 10 10 10 10 stretch;\n" - "}\n" - ".frame2 {\n" - " border-style: solid;\n" - " border-color: rgb(255,0,0);\n" - " border-width: 10;\n" - " border-radius: 10;\n" - "}\n" - ".frame3 {\n" - " border-style: solid;\n" - " border-color: rgb(0,0,0);\n" - " border-width: 2;\n" - " border-radius: 10;\n" - "}\n", - -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - gtk_style_context_add_class (context, "frame1"); gtk_style_context_set_junction_sides (context, 0); gtk_render_frame (context, cr, 12, 12, 50, 50); @@ -166,7 +138,6 @@ draw_cb_frame (GtkWidget *widget, cairo_t *cr) gtk_render_frame (context, cr, 68, 74, 56, 50); gtk_style_context_remove_class (context, "frame3"); - gtk_style_context_remove_provider (context, provider); gtk_style_context_restore (context); return TRUE; @@ -269,29 +240,16 @@ static gboolean draw_cb_frame_gap (GtkWidget *widget, cairo_t *cr) { GtkStyleContext *context; - GtkStyleProvider *provider; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - ".frame {\n" - " border-style: solid;\n" - " border-width: 1;\n" - " border-radius: 0;\n" - "}\n", - -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - gtk_style_context_add_class (context, "frame"); gtk_style_context_set_junction_sides (context, 0); gtk_render_frame_gap (context, cr, 12, 12, 50, 50, GTK_POS_TOP, 15, 35); gtk_style_context_remove_class (context, "frame"); - gtk_style_context_remove_provider (context, provider); - gtk_style_context_restore (context); return TRUE; @@ -359,6 +317,8 @@ int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *ebox; + GtkStyleContext *context; + GtkStyleProvider *provider; gtk_init (&argc, &argv); @@ -373,12 +333,45 @@ int main (int argc, char *argv[]) gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), TRUE); gtk_container_add (GTK_CONTAINER (window), ebox); gtk_widget_set_name (ebox, "ebox"); + + context = gtk_widget_get_style_context (ebox); + provider = (GtkStyleProvider *)gtk_css_provider_new (); + gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), + ".frame1 {\n" + " border-image: url('gradient1.png') 10 10 10 10 stretch;\n" + "}\n" + ".frame2 {\n" + " border-style: solid;\n" + " border-color: rgb(255,0,0);\n" + " border-width: 10;\n" + " border-radius: 10;\n" + "}\n" + ".frame3 {\n" + " border-style: solid;\n" + " border-color: rgb(0,0,0);\n" + " border-width: 2;\n" + " border-radius: 10;\n" + "}\n" + ".background {\n" + " border-radius: 10;\n" + " border-width: 0;\n" + " background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n" + "}\n" + ".frame {\n" + " border-style: solid;\n" + " border-width: 1;\n" + " border-radius: 0;\n" + "}\n", -1, NULL); + gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_signal_connect_after (ebox, "draw", G_CALLBACK (draw_cb), NULL); gtk_widget_show_all (window); gtk_main (); + gtk_style_context_remove_provider (context, provider); + return 0; } -- 2.30.2